//using System;
//using System.IO;
//using NUnit.Framework;
//using Html;
//using System.Web.UI;
//using System.Xml;

//namespace Html.Tests
//{
//    [TestFixture]
//	public class HtmlTests
//	{
//		

//		[Test]
//		public void HtmlTextWriterWrapperTests()
//		{
//			string actual;
//			using (StringWriter text = new StringWriter())
//			using (HtmlTextWriter html = new HtmlTextWriter(text))
//            {
//				IWriter writer = new HtmlTextWriterWrapper(html);
//				writer.WriteBeginTag("span");
//				writer.WriteAttribute("class", "test");
//				writer.CloseTag();
//				writer.Write('T');
//				writer.Write("his rocks");
//				writer.WriteEndTag("span");
//				actual = text.ToString();
//            }
//			Assert.AreEqual("<span class=\"test\">This rocks</span>", actual);
//		}
//		[Test]
//		public void XmlWriterWrapperTests()
//		{
//			string actual;
//			using (StringWriter text = new StringWriter())
//			{
//				XmlTextWriter xml = new XmlTextWriter(text);
//				IWriter writer = new XmlWriterWrapper(xml);
//				writer.WriteBeginTag("span");
//				writer.WriteAttribute("class", "test");
//				writer.CloseTag();
//				writer.Write('T');
//				writer.Write("his rocks");
//				writer.WriteEndTag("span");
//				actual = text.ToString();
//			}
//			Assert.AreEqual("<span class=\"test\">This rocks</span>", actual);
//		}
//        
//		[Test]
//		public void VerifyElementIndexer()
//		{
//			Element span = new Element("span", "border=0;width=100px;");
//			Assert.AreEqual("0", span["border"]);
//			Assert.AreEqual("100px", span["width"]);
//			Assert.AreEqual(null, span["nonexistentattribute"]);
//			Assert.AreEqual(null, span[String.Empty]);
//			Assert.AreEqual(null, span[null]);
//		}
//		
//		[Test]
//		public void CssClassesAreAdditive()
//		{
//			string expected = "<input class=\"required integer\"></input>";
//			Element element = new Element("input").AddCssClasses("required integer");
//			Assert.AreEqual(2, element.CssClasses.Count);
//			string actual = element;
//			Assert.AreEqual(expected, actual);

//		}
//		[Test]
//		public void NullOrEmptyCssClassesDoNotCauseExceptions()
//		{
//			string expected = "<span>Chris</span>";
//			Assert.AreEqual(expected, new Element("span").AddCssClasses(null).Update("Chris").ToString());
//			Assert.AreEqual(expected, new Element("span").AddCssClasses(String.Empty).Update("Chris").ToString());
//		}
//		[Test]
//		public void CannotAddDuplicateCssClasses()
//		{
//			string expected = "<span class=\"required\"></span>";
//			string actual = new Element("span").AddCssClasses("required required");
//			Assert.AreEqual(expected, actual);
//		}
//		[Test]
//		public void StyleAttributesShouldBeAdditive()
//		{
//			string expected = "<table style=\"width:250px;border:solid 1px black;\"></table>";
//			string actual = new Element("table")
//				.AddStyle("width:250px;border:solid 1px black;");
//			Assert.AreEqual(expected, actual);
//		}
//		[Test]
//		[ExpectedException(typeof(ArgumentException))]
//		public void ArgExceptionShouldBeThrownByAttributeCtor()
//		{
//			new Attribute(null);
//		}
//		[Test]
//		public void CanRemoveAttributes()
//		{
//			Element el = new Element("span", "id=sammy");
//			Assert.AreEqual("<span id=\"sammy\"></span>", el.ToString());
//			el.RemoveAttribute("id");
//			Assert.AreEqual("<span></span>", el.ToString());
//			el.AddAttributes("id=sammy");
//			Assert.AreEqual("<span id=\"sammy\"></span>", el.ToString(), "should have added the attribute back in");
//			Assert.AreEqual("<span id=\"sammy\"></span>", el.RemoveAttribute("blah").ToString(), "removing nonexistent attributes should not affect the element");
//			Assert.AreEqual("<span id=\"sammy\"></span>", el.RemoveAttribute(String.Empty).ToString(), "removing empty attribute names should not affect the element");
//			Assert.AreEqual("<span id=\"sammy\"></span>", el.RemoveAttribute(null).ToString(), "removing null attribute names should not affect the element");
//			
//		}
//		[Test]
//		public void VerifyAddingAttributes()
//		{
//			Element table = new Element("table");
//			table.AddAttributes(new Attribute("width", "100%"));
//			Assert.AreEqual("<table width=\"100%\"></table>", table.ToString());
//			table.AddAttribute("height", "100%");
//			Assert.AreEqual("<table width=\"100%\" height=\"100%\"></table>", table.ToString());
//			table.AddAttributes("border=1");
//			Assert.AreEqual("<table width=\"100%\" height=\"100%\" border=\"1\"></table>", table.ToString());
//			Assert.AreEqual(3, table.Attributes.Count);
//			table.AddAttribute(null, "");
//			Assert.AreEqual(3, table.Attributes.Count);
//			table.AddAttribute("", null);
//			Assert.AreEqual(3, table.Attributes.Count);
//			table.AddAttribute("", "");
//			Assert.AreEqual(3, table.Attributes.Count);
//			string attrString = null;
//			table.AddAttributes(attrString);
//			Assert.AreEqual(3, table.Attributes.Count);
//			Attribute attr = null;
//			table.AddAttributes(attr);
//			Assert.AreEqual(3, table.Attributes.Count);
//			table.AddAttributes(new Attribute[0]);
//			Assert.AreEqual(3, table.Attributes.Count);

//		}


//		
//		

//		[Test]
//		public void VerifyConstructors()
//		{
//			string expected = "<span border=\"0\"><b>Hello</b></span>";
//			string actual =
//				new Element("span",
//					"border=0",
//					new Element("b")
//						.Update("Hello")).ToString();
//			Assert.AreEqual(expected, actual);
//		}
//		
//		[Test]
//		public void VerifyTagOnly()
//		{
//			Element table = new Element("table");
//			Assert.AreEqual("<table></table>", table.ToString());
//		}
//		[Test]
//		public void VerifyChildTags()
//		{
//			Element table = new Element("table", new Element("thead", new Element("th")));
//			Assert.AreEqual("<table><thead><th></th></thead></table>", table.ToString());
//		}
//		[Test]
//		public void VerifyAttributes()
//		{
//			Element table = new Element("table", "width=50%;height=100%;");
//			Assert.AreEqual("<table width=\"50%\" height=\"100%\"></table>", table.ToString());
//			Element div = new Element("div");
//			div.Insert("span", "id=silly");
//			Assert.AreEqual("<div><span id=\"silly\"></span></div>", div.ToString());
//		}
//		[Test]
//		public void VerifyAttributesAndChildTags()
//		{
//			Element table = new Element("table", "width=100%",
//				new Element("thead", new Element("th").Update("First Name"))
//			);
//			Assert.AreEqual("<table width=\"100%\"><thead><th>First Name</th></thead></table>", table.ToString());
//		}

//	}
//}
